package com.secxiot.provider.user.dao;

import com.secxiot.provider.user.dto.DeptDto;
import com.secxiot.provider.user.dto.UserDeptDto;
import com.secxiot.provider.user.entity.Dept;
import com.secxiot.provider.user.entity.DeptExample;
import com.secxiot.provider.user.entity.DeptUsersDo;
import com.secxiot.provider.user.vo.DeptVo;
import com.secxiot.provider.user.vo.UserSimpleVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface DeptDao {
    int countByExample(DeptExample example);

    int deleteByExample(DeptExample example);

    int deleteByPrimaryKey(Long deptId);

    int insert(Dept record);

    int insertSelective(Dept record);

    List<Dept> selectByExample(DeptExample example);

    Dept selectByPrimaryKey(Long deptId);

    int updateByExampleSelective(@Param("record") Dept record, @Param("example") DeptExample example);

    int updateByExample(@Param("record") Dept record, @Param("example") DeptExample example);

    int updateByPrimaryKeySelective(Dept record);

    int updateByPrimaryKey(Dept record);

    DeptDto getDeptByUserId(@Param("userId") Long userId);

    DeptDto getDeptByDeptId(Long deptId);

    List<DeptDto> listSubdeptByDeptId(Long deptId);
    //患者
    List<DeptUsersDo> deptUsersDoById(Long id);

    List<UserSimpleVo> selectSubManagersByDeptId(Long deptId);

    //查询用户上级部门
    List<UserDeptDto> selectSupperDeptsByUserId(@Param("userId") Long userId, @Param("userType") String userType);

    List<DeptDto> listToLeafByDeptId(@Param("supperIds") String supperIds, @Param("supperIdsLike") String supperIdsLike);
    
    /**
     * 根据parentid获取部门列表
     * @param parentId
     * @return
     */
    List<DeptVo> getDeptListByParentId(Long parentId);

    //shenmingming
}